#ifndef DSPSIMULATOR_INSTRUCTION_MVKH_H
#define DSPSIMULATOR_INSTRUCTION_MVKH_H

#include "dspSimulator/targetMachine/dspInstruction.h"

namespace dspsimulator {
    class MVKH : public DspInstruction {
    public:
        explicit MVKH(u64 address = 0, u32 size = 4) :
                DspInstruction("MVKH", address, size) {}

        MVKH(const MVKH &) = default;

        MVKH(MVKH &&) = default;

        MVKH &operator=(const MVKH &) = default;

        MVKH &operator=(MVKH &&) = default;

        ~MVKH() override = default;

        void generate_ir(const std::shared_ptr<simulator::IRGenElement> &ir_gen_element) override;

        std::string to_string() const override;

        std::shared_ptr<Instruction> clone() const override { return std::make_shared<MVKH>(*this); };
    protected:
        std::shared_ptr<DspInstruction> decode_standard_instruction(const std::shared_ptr<DspInstructionInfo> &dsp_instruction_info) override;
    };
}

#endif //DSPSIMULATOR_INSTRUCTION_MVKH_H
